package com.itcam.lease.common.login;

import com.itcam.lease.common.context.LoginUser;

/**
 * 用于在多线程环境中存储和获取当前登录用户的工具类。
 * 它使用 ThreadLocal 来确保每个线程都有自己的登录用户副本。
 */
public class LoginUserHolder {
    // 使用 ThreadLocal 来存储当前线程的登录用户
    public static ThreadLocal<LoginUser> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的登录用户。
     *
     * @param loginUser 要设置的登录用户对象。
     */
    public static void setLoginUser(LoginUser loginUser) {
        threadLocal.set(loginUser);
    }

    /**
     * 获取当前线程的登录用户。
     *
     * @return 当前线程的登录用户对象，如果没有设置，则返回 null。
     */
    public static LoginUser getLoginUser() {
        return threadLocal.get();
    }

    /**
     * 清除当前线程的登录用户。
     * 这通常在用户注销或会话结束时调用。
     */
    public static void clear() {
        threadLocal.remove();
    }
}
